/**
 * 
 */
package com.xpec.c4.service.module;

import java.lang.reflect.Field;

/**
 * {@link ServerProperties} 讀取 server_info.properties 設定值用的 key
 * 
 * @author TW15010
 */
public class PropertyKey {
	static {
		replaceValues();
	}
	
	/** 是否可以使用 debug 指令 (boolean) */
	public static String DebugEnable;

	/** 百家樂牌局開服時自動啟動 */
	public static String bacarrat_auto_start;

	/** 是否在啟動時自動建立 db 內的 table */
	public static String auto_create_db_table;

	// 心跳消息檢查 ================================================

	/** 如果5分鐘內都沒有發送period, 則踢掉 (sec) */
	public static String period_sync_threshold;

	/** 是否 啟動 frequency check */
	public static String enable_frequency_detect;

	/** 是否 啟動 processTime check */
	public static String enable_precesstime_detect;

	/** 累積統計頻率的時間 */
	public static String frequency_detect_max_period_sec;

	/** 最小開始踢人等待統計時間(至少統計時間 > 此職後, 才能把不正常的給踢走) (sec) */
	public static String frequency_detect_wait_static_time;

	/** 踢人頻率誤差容忍百分比門檻 (0-100) */
	public static String frequencye_detect_inaccuracy_threshold;

	/** 標準的週期值 (sec) */
	public static String period_sync_cycle;

	/** 踢人時差誤差門檻 ( + 此值 則踢掉 , 頻率誤差值) , client-> server計時器誤差 , 踢掉 (sec) */
	public static String precesstime_detect_kick_threshold;

	/**
	 * Processtime detect 週期, 過了後重新抓取client first process time
	 * (怕client~server之間因為系統誤差越來越大) (sec)
	 */
	public static String precesstime_detect_cycle;

	/** 是否為正式 server */
	public static String formal_server;

	/** 將 gamelog 匯入 db 時使用的執行緒數量 */
	public static String gamelog_import_thread_count;

	// tomcat =======================================================

	/**
	 * 機器人用的 tomcat 主機<br>
	 * format: xxx.xxx.xxx.xxx:oooo<br>
	 * 填寫時後面要加上是第幾個 tomcat<br>
	 * ex:<br>
	 * {@link #robot_tomcat_host}1=xxx.xxx.xxx.xxx:oooo<br>
	 * {@link #robot_tomcat_host}2=xxx.xxx.xxx.xxx:oooo<br>
	 * ...
	 */
	public static String robot_tomcat_host;

	/**
	 * 玩家用的 tomcat 主機<br>
	 * format: xxx.xxx.xxx.xxx:oooo<br>
	 * 填寫時後面要加上是第幾個 tomcat<br>
	 * ex:<br>
	 * {@link #player_tomcat_host}1=xxx.xxx.xxx.xxx:oooo<br>
	 * {@link #player_tomcat_host}2=xxx.xxx.xxx.xxx:oooo<br>
	 * ...
	 */
	public static String player_tomcat_host;

	// provider ====================================================

	/** 假平台營運商 id */
	public static String provider_opid;

	/** 假平台產生驗證碼用的 key */
	public static String provider_promisekey;

	// account ====================================================

	/**
	 * account module 所在的 server name<br>
	 * 實際使用時後面要加上 account servlet 編號才取得到值<br>
	 * ex: {@link #account_server_name}1, {@link #account_server_name}2 ...
	 */
	public static String account_server_name;

	/** account server 上的營運商 id */
	public static String account_opid;

	/** account server 上產生驗證碼用的 key */
	public static String account_promisekey;

	/**
	 * 允許登入的版號<br>
	 * 有值的話就只有指定的版號可以登入，沒值的話所有版本都可以登入<br>
	 * 格式: 50,51,52 <br>
	 * 預設是 null
	 */
	public static String account_allow_login_version;
	
	/**
	 * 認證會員判斷方式設定<br>
	 * 內容參考 com.ms.service.module.account.AccountVerifyCheckWay
	 */
	public static String account_verify_member_check;
	
	/**
	 * google 儲值用的 public key
	 */
	public static String google_purchase_public_key;
	
	// gmtool ====================================================
	public static String gmtool_iap_url;
	public static String gmtool_iap_key;
	public static String gmtool_iap_server_id;

	/** gmtool 後台所在位置 */
	public static String gmtool_web_url;
	
	
	// account + gmtool ==========================================
	/**
	 * 專用ip列表<br>
	 * 如果不在這裡面的，就回絕<br>
	 * 要用的api要自己加<br>
	 */
	public static String api_allow_IP_list;

	// robot  ====================================================
	/** 小樂登入要走的ip */
	public static String robot_proxy;

	/** 小樂是否要記錄 log, 預設 true */
	public static String robot_save_log;

	/** 小樂是否要記錄console log, 預設 true */
	public static String robot_save_console_log;
	
	/** 小樂記錄 log 的分數門檻 */
	public static String robot_save_log_score;
	
	/** 樂翻寶的小樂，是否要跳過流程*/
	public static String robot_fnbo_course_pass_over;
	
	// log =======================================================
	/** 是否使用兩階段寫log */
	public static String two_stages_write_log;
	
	/** h5 agent **/
	public static String h5_character_select;
	public static String h5_default_character;
	public static String h5_quickseat;
	
	/** 回傳 game log 給 h5 agent 的網址 */
	public static String h5_sned_log_url;
	
	/** 回傳 game log 給 h5 agent 的 API key */
	public static String h5_sned_log_key;
	
	/**
	 * 將每一個成員變數的值置換成變數的名稱
	 */
	public static void replaceValues() {
		// 掃一遍所有的成員，將每個變數的值和名稱相同
		Field[] fields = PropertyKey.class.getFields();

		for (Field field : fields) {
			if (field.getType() == String.class) {
				try {
					field.set(null, field.getName());
				} catch (IllegalArgumentException e) {
					e.printStackTrace();
				} catch (IllegalAccessException e) {
					e.printStackTrace();
				}
			}
		}
	}
}
